package br.com.leopard.erp.gym.dao.cad;

import java.util.List;

import javax.ejb.LocalBean;
import javax.ejb.Stateless;

import br.com.leopard.erp.gym.exception.NenhumResultadoEncontradoException;
import br.com.leopard.erp.gym.mapeamento.cad.Municipio;
import br.com.leopard.erp.gym.mapeamento.cad.PessoaFisica;
import br.com.leopard.erp.gym.persistence.AbstractDAO;
import br.com.leopard.erp.gym.persistence.ParametroQueryBuilder;

@Stateless
@LocalBean
public class PessoaFisicaDAO extends AbstractDAO<PessoaFisica, Long> {

	public PessoaFisicaDAO() {
		super(PessoaFisica.class);
	}

	public PessoaFisica getPorCPF(String cpf) throws NenhumResultadoEncontradoException {
		String query = "PessoaFisica.listarPessoaPorCPF";

		ParametroQueryBuilder builder = new ParametroQueryBuilder();
		builder.addParametro("cpf", cpf);

		return super.getSingleObject(query, builder.getParametros());
	}

	public List<PessoaFisica> getPorNaturalidade(Municipio naturalidade) {
		String query = "PessoaFisica.findByNaturalidade";

		ParametroQueryBuilder builder = new ParametroQueryBuilder();
		builder.addParametro("naturalidade", naturalidade);

		return super.listNamedQuery(query, builder.getParametros());
	}

	public List<PessoaFisica> getPorCPFEPessoaIDDiferenteDe(String cpf, Long idPessoa) {
		String query = "PessoaFisica.findByCPFEIDDiferenteDe";

		ParametroQueryBuilder builder = new ParametroQueryBuilder();
		builder.addParametro("cpf", cpf);
		builder.addParametro("idPessoa", idPessoa);

		return super.listNamedQuery(query, builder.getParametros());
	}
}
